// pages/asset-detail/asset-detail.js
const api = require('../../utils/api.js')
const util = require('../../utils/util.js')

Page({
    data: {
        assetId: '',
        assetInfo: {},
        repairHistory: [],
        statusText: {
            'in_use': '在用',
            'idle': '闲置',
            'repairing': '维修中',
            'scrapped': '已报废'
        },
        repairStatusText: {
            'pending': '待处理',
            'processing': '处理中',
            'completed': '已完成',
            'rejected': '已拒绝'
        },
        isWarrantyValid: false,
        hasPermission: false  // 是否有查看资产的权限（教师/学生）
    },

    onLoad(options) {
        const app = getApp()

        // 检查用户角色权限
        const userRole = app.globalData.userRole
        const isAdmin = app.globalData.isAdmin
        const hasPermission = isAdmin || userRole === 'teacher' || userRole === 'student'

        this.setData({ hasPermission })

        // 如果无权限，显示提示并返回
        if (!hasPermission) {
            wx.showModal({
                title: '权限不足',
                content: '您当前是普通用户，仅教师和学生可查看资产详情',
                showCancel: false,
                success: () => {
                    wx.navigateBack({
                        fail: () => {
                            // 如果无法返回，跳转到首页
                            wx.switchTab({ url: '/pages/index/index' })
                        }
                    })
                }
            })
            return
        }

        // 有权限的用户才加载详情
        if (options.id) {
            this.setData({ assetId: options.id })
            this.loadAssetDetail(options.id)
        }
    },

    // 加载资产详情
    async loadAssetDetail(id) {
        wx.showLoading({ title: '加载中...' })

        try {
            const data = await api.request({
                url: `/asset/${id}`
            })

            // 格式化日期
            if (data.purchase_date) {
                data.purchase_date = data.purchase_date.split('T')[0]
            }
            if (data.warranty_expire) {
                data.warranty_expire = data.warranty_expire.split('T')[0]
            }
            // 计算保修状态
            if (data.warranty_expire) {
                const expireDate = util.safeDate(data.warranty_expire)
                const today = new Date()
                data.isWarrantyExpired = today > expireDate
            }

            // 有权限的用户可以查看完整信息

            // 格式化借用记录时间
            if (data.loans) {
                data.loans.forEach(item => {
                    item.borrow_date = util.formatTime(util.safeDate(item.borrow_date))
                    if (item.actual_return_date) {
                        item.actual_return_date = util.formatTime(util.safeDate(item.actual_return_date))
                    }
                })
            }

            // 格式化维修记录时间
            if (data.repairs) {
                data.repairs.forEach(item => {
                    item.created_at = util.formatTime(util.safeDate(item.created_at))
                })
            }

            // 格式化维修历史日期 (旧的 repairHistory 字段，如果存在)
            const history = data.repairHistory || []
            history.forEach(item => {
                item.created_at = util.formatTime(util.safeDate(item.created_at))
            })

            this.setData({
                assetInfo: data,
                repairHistory: history
            })

            wx.hideLoading()
        } catch (error) {
            wx.hideLoading()
            console.error('加载资产详情失败', error)
            wx.showModal({
                title: '加载失败',
                content: '资产不存在或已删除',
                showCancel: false,
                success: () => {
                    wx.navigateBack()
                }
            })
        }
    },

    // 查看维修详情
    viewRepairDetail(e) {
        const { id } = e.currentTarget.dataset
        wx.navigateTo({
            url: `/pages/order-detail/order-detail?orderId=${id}`
        })
    },

    // 报修此设备
    startRepair() {
        wx.navigateTo({
            url: `/pages/repair/repair?labId=${this.data.assetInfo.lab_id}&assetId=${this.data.assetId}&assetCode=${this.data.assetInfo.asset_code}&assetName=${this.data.assetInfo.name}`
        })
    },

    // 申请借用
    applyLoan() {
        const app = getApp()
        // 需要登录
        app.requireLogin({
            title: '申请借用资产',
            content: '借用资产需要先登录'
        }).then(() => {
            wx.navigateTo({
                url: `/pages/loan-apply/loan-apply?assetId=${this.data.assetId}&assetName=${this.data.assetInfo.name}&assetCode=${this.data.assetInfo.asset_code}`
            })
        }).catch(() => {
            // 用户取消登录
        })
    }
})
